"""
集合的定义和操作
"""
# 定义一个集合
my_set = {1, 2, 3, 4, 5,1}
print(f"my_set: {my_set} type:{type(my_set)}")  # 输出: {1, 2, 3, 4, 5}，集合中不允许重复元素
# 集合是无序的，不能通过索引访问元素
# 添加元素
my_set.add(6)
print(f"添加元素6后的my_set: {my_set}")  # 输出: {1, 2, 3, 4, 5, 6}
# 删除元素
my_set.remove(3)
print(f"删除元素3后的my_set: {my_set}")  # 输出: { 1, 2, 4, 5, 6}
# 使用discard删除元素，如果元素不存在不会报错
my_set.discard(10)  # 元素10不存在，不会报错
print(f"使用discard删除元素10后的my_set: {my_set}")  # 输出: {1, 2, 4, 5, 6}
# 从集合中取出元素
popped_element = my_set.pop()  # 随机删除并返回一个元素
print(f"弹出元素: {popped_element}")
print(f"弹出元素后的my_set: {my_set}")
# 清空集合
my_set.clear()
print(f"清空后的my_set: {my_set}")  # 输出: set()
# 集合运算
set_a = {1, 2, 3}
set_b = {3, 4, 5}
# 并集
union_set = set_a | set_b
print(f"set_a和set_b的并集: {union_set}")  # 输出: {1, 2, 3, 4, 5}
# 交集
intersection_set = set_a & set_b
print(f"set_a和set_b的交集: {intersection_set}")  # 输出: {3}
# 差集
difference_set = set_a - set_b
print(f"set_a和set_b的差集: {difference_set}")  # 输出: {1, 2}
# 对称差集
symmetric_difference_set = set_a ^ set_b
print(f"set_a和set_b的对称差集: {symmetric_difference_set}")  # 输出: {1, 2, 4, 5}
# 统计集合的元素个数
set_c = {1, 2, 3, 4, 5}
print(f"set_c的元素个数: {len(set_c)}")  # 输出: 5
# 集合的遍历
print("遍历set_c:")
for item in set_c:
    print(item)
